/**
 * Copyright (c) 2016-2019  All rights reserved.
 *
 *
 *
 * 版权所有，侵权必究！
 */

package io.yuncheng.common.config;

import io.yuncheng.modules.sys.entity.SysDictEntity;
import io.yuncheng.modules.sys.service.SysDictService;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ObjectUtils;

import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Swagger配置
 *
 * @author Mark sunlightcs@gmail.com
 */
@Configuration
@Data
public class DictConfig {
    private Map<String, SysDictEntity> sysDictEntityMap;

    private Map<String, List<SysDictEntity>> sysDictList;
    @Autowired
    private SysDictService sysDictService;
    @PostConstruct
    public  void  buildMap(){
        List<SysDictEntity> list = sysDictService.list();
        Map<String, SysDictEntity> collect = list.stream().collect(Collectors.toMap(a -> a.getType() + a.getCode(), a -> a, (k1, k2) -> k1));
        setSysDictEntityMap(collect);
        Map<String, List<SysDictEntity>> typeMap = list.stream().collect(Collectors.groupingBy(SysDictEntity::getType));
        setSysDictList(typeMap);

    }
    public String getSysDictValue(String type,String code){
        SysDictEntity sysDictEntity = getSysDict(type,code);
        if(sysDictEntity!=null){
            return sysDictEntity.getValue();
        }
        return "";
    }
    public String getSysDictCode(String type,String value){
        List<SysDictEntity> sysDictEntities = sysDictList.get(type);
        List<SysDictEntity> collect = sysDictEntities.stream().filter(a -> a.getValue().equals(value)).collect(Collectors.toList());
        if(!ObjectUtils.isEmpty(collect)){
            return collect.get(0).getCode();
        }
        return  "";
    }

    public SysDictEntity getSysDict(String type,String code){
       return  sysDictEntityMap.get(type + code);
    }
}
